#!/usr/bin/env python
# The following dictionaries house the exceptions to the basic lexicon.  These dictionaries 
# are divided along the same hierarchy seen in towns.py. All of the exceptions for the _COUNTRY 
# level are housed in the same dict. Then _REGION and so on.

COUNTRY  = {'US'             :  ['montpelier:1,france:NNP: { m ~ ou n =.= p * e l . y ei } :{mont==pelier}:10',
                                ],
            'AUS'            :  ['aquatic::JJ: { @ . k w * o . t i k }:{aqua==tic}:374', 
                                 'auction::NN/VB/VBP: { * o k . sh n } :{auction}:1873', 
                                 'chassis::NN: { sh * a . s iy } % { sh * a . z iy } :{chassis}:780',
                                 'immediate::JJ: { @ . m * ii . d ii == @ t } :{i==mmedi==ate}:7724',
                                 'oral::JJ: { * o . r @ l } :{oral}:1964',
                                 'queensland::NNP: { k w * ii n == z =.= l a n d } :{queen==s==land}:44'],
            }

REGION  = {'southern_us'      :  ['bulk::NN/VB/VBP: { b * u l k } :{bulk}:0',
                                  'bulge::NN/VB/VBP: { b * u l jh } :{bulge}:0',
                                  'detroit::NNP: { d * ii . t r oi t } :{detroit}:0',
                                  'hotel::NN/NNP: { h * ou . t e l } :{hotel}:0',
                                  'insurance::NN: { * i n =.= sh ur r }.> A5 n s > :{in==sure}>ance>:21854',
                                  'lavender::JJ/NN: { l * eh . v I2 n . d @r r } :{lavender}:1038',
                                  'national::JJ/NNP: { n * eh sh . n $}> l > :{nation}>al>:69530',
                                  'savage::JJ/NN/VB/VBP: { s * eh . v I2 jh } :{savage}:3242',
                                  'wagon::NN: { w * eh . g @ n } :{wagon}:2159',
                                  'dagger::NN: { d * eh . g @r r } :{dagger}:686',
                                  'fashion::NN/VB/VBP: { f * eh . sh n } :{fashion}:10126',
                                  'psychic::JJ/NN: { s * ae k =.= i k } :{psych==ic}:306',
                                  'icicle::NN: { * ai s =.= i . k l } :{ic==icle}:16',
                                  'cycle::NN/VBP/VB: { s * ae k . l } :{cycle}:5855',
                                 ],
           # Below, 'theory' for 'southern_england' is included as a stem 
           # so that words like 'theorem' and 'theorist' will be recognized.
           'southern_england'  : ['theory::NN: { th * ir . r == :{theor==:',],
           'scotland'          : ['thither::RB: { th * i . dh @r r } :{thither}:0',
                                  'record:1:NN: { r * e . k @r r d } :{record}:36468',
                                  'houses::NNS/VBZ: { h * ow s }.> I7 z > :{house}>s>:0',
                                  'abbreviate::VB/VBP: { @ =.= b r ~ ii . v ii =.= * ee t } :{a==bbrevi==ate}:0',
                                  'with::IN/JJ: { w * i th } :{with}:0'
                                  'december::NNP: { d i . z * e m . b @r r } :{december}:0',
                                  'wherewithal::NN: { hw * eir r =.= w i th =.= ~ oo l } :{where==with==al}:0',
                                  'your::PRP: { y * or/ur r } % { y * ur r } :{your}:0',
                                  'although::IN/NN: { oo l =.= th * ou } :{al==though}:0',
                                  'though::IN/RB: { th * ou } :{though}:0',
                                  'length::NN: { l * e n th } :{length}:0',
                                  'strength::NN: { s t r * e n th } :{strength}:0',
                                  'organise::VB/VBP: { ~ or r . g @ . n == * ae z } :{organ==ise}:0',
                                  'raspberry::NN/JJ: { r * ah s =.= b @ . r iy } :{rasp==berry}:0',
                                  'realise::VBP/VB: { r i@ . l * ae z } :{realise}:0',
                                  'iron::NN/VB/VBP/JJ: { * ae @r r n } % { * ae . r @ n } :{iron}:0',
                                  'magazine::NN: { m * a . g @ . z ~ ii n } :{magazine}:0',
                                  'thence::RB: { dh * e n s } % { th * e n s } :{thence}:0',
                                  'wednesday::NNP: { w * e . d n z =.= d ei } :{wednes==day}:0',
                                  'poem::NN: { p * ou . y @ m } :{poem}:0',
                                  'peugeot::NNP: { p y * @@r2 . zh ou } :{peugeot}:945',
                                  'isobel::NNP:  { * i . z @ . b l } :{isobel}:962',
                                  'isabel::NNP:  { * i . z @ . b l } :{isabel}:962',
                                  'shire::NNP:  =.= sh AER1 r } % =.= sh aer r } :==shire}:0',
                                 ],
           'wales'             : ['tooth::NN: { t * u th } :{tooth}:0',
                                  'whole::JJ/NN: { h * uu l } :{whole}:0',
                                  'their::PRP: { dh * ei @r r } :{their}:0',
                                  'really::RB: { r * ii l }.> iy > :{real}>y>:551688',
                                  'renown::NN: { r i . n * ou n } :{renown}:483',
                                 ],
           'northern_england'  : ['poor::JJ: { p * or r } :{poor}:0',
                                 ],
         }

LOCAL =  { 'general_uk'        : ['poor::JJ: { p * or r } :{poor}:0',
                                 ],
           'birmingham'        : ['tooth::NN: { t * u th } :{tooth}:0',
                                 ],
           'glasgow'           : ['j::NNP/NN/LS: { jh * ae } :{j}:0',
                                 ],
           'leeds'             : ['year::NN: { y * @@r r } :{year}:0',
                                  'yesteryear::NN: { y * e . s t @r r =.= y ~ @@r r } :{yester==year}:0',
                                 ],
           'new_york'          : ['durham::NNP: { d * ur . r == A5 m } :{dur==ham}:0',
                                  'donkey::NN: { d * uh ng . k iy } :{donkey}:0',
                                  "won't::MD|RB: { w * uu == n t } :{wo==n't}:0",
                                 ],
           # The enriched orthography for 'little' below seems to be a typo.  
           # I need to check the UNISYN documentation before making the change.
           'cardiff'           : ['little::NN: { l * i . ? l } :{tooth}:0',
                                 ],
         }
